#include "sirFractii.h"
#include "fractii.h"
sirFractie::sirFractie()
{
    int n;
    cout<<"Nr fractii:";
    cin>>n;
    for (int i=0;i<n;i++)
    {
        int num,nr;
        cout<<"Numarator:";
        cin>>num;
        cout<<"Numitor:";
        cin>>nr;
        fractie temp(num,nr);
        li.push_back(temp);
        
    }
}

sirFractie::~sirFractie()
{
    cout<<"blown";
}

fractie sirFractie::suma()
{
    fractie temp;
    list<fractie>::iterator i;
    for (i=li.begin();i!=li.end();i++)
    {
        fractie t=*i;
        temp=temp+t;
    }
    temp.simplificare();
    return temp;
}

fractie sirFractie::minim()
{
    list<fractie>::iterator i=li.begin();
    fractie min=*i;
    for (i=li.begin();i!=li.end();i++)
    {
        if (*i<min)
        {
            min=*i;
        }
    }
    return min;
}
fractie sirFractie::maxim()
{
    list<fractie>::iterator i=li.begin();
    fractie max=*i;
    for (i=li.begin();i!=li.end();i++)
    {
        if (max<*i)
        {
            max=*i;
        }
    }
    return max;
}

void sirFractie::reducto()
{
    list<fractie>::iterator i;
    for (i=li.begin();i!=li.end();i++)
    {
        (*i).simplificare();
    }
    
}
void sirFractie::print()
{
    list<fractie>::iterator i;
    for (i=li.begin();i!=li.end();i++)
    {
        cout<<*i;
    }
}

void sirFractie::ordonare()
{
    list<fractie>::iterator i,j;
    for (i=li.begin();i!=li.end();i++)
        for (j=li.begin();j!=li.end();j++)
        {
            if (*j<*i)
            {
                fractie temp;
                temp=*i;
                *i=*j;
                *j=temp;
            }
        }
}
ostream& operator<<(ostream& out, sirFractie s)
{
    list<fractie>::iterator i;
    for (i=s.li.begin();i!=s.li.end();i++)
        out<<*i;
    return out;
}